<?php

/**
 * follow actions.
 *
 * @package    explications_informatiques
 * @subpackage follow
 * @author     Guimezanes Cyrille
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class followActions extends sfActions
{

  public function executeNew(sfWebRequest $request)
  {
    $this->form = new FollowForm();
	$this->form->setDefault('id_asso', $request->getParameter('idasso'));
  }
  public function executeRecomand(sfWebRequest $request)
  {
	$this->forwardUnless($this->getUser()->isAuthenticated(),"headers","forbidden");
    $this->form = new RecomandForm();
	$this->form->setDefault('id_asso', $request->getParameter('idasso'));
  }
  public function executeCreate(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST));

    $this->form = new FollowForm();

    $this->processForm($request, $this->form);

    $this->setTemplate('new');
  }
  public function executeSendrecomand(sfWebRequest $request)
  {
    $this->forward404Unless($request->isMethod(sfRequest::POST));

    $this->form = new RecomandForm();

    $this->processRecomand($request, $this->form);

    $this->setTemplate('new');
  }

  public function executeDelete(sfWebRequest $request)
  {
    $request->checkCSRFProtection();

    $this->forward404Unless($follow = Doctrine_Core::getTable('Follow')->find(array($request->getParameter('id'))), sprintf('Object follow does not exist (%s).', $request->getParameter('id')));
    $follow->delete();
	$this->getUser()->setFlash("info","Vous ne suivez plus cet article.");
	//log
	
    $this->redirect('@homepage');
  }

  protected function processForm(sfWebRequest $request, sfForm $form)
  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    if ($form->isValid())
    {
      $follow = $form->save();
	  $this->getUser()->setFlash("info","Vous suivez les modifications de cet article");
      $this->redirect('@show_article?title=article&idasso='.$request["follow"]["idasso"]);
    }
  }
  
  protected function processRecomand(sfWebRequest $request, sfForm $form)
  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    if ($form->isValid())
    {
      if( sfContext::getInstance()->getConfiguration()->getEnvironment() != 'dev' )
            {
				$q = Doctrine_Query::create()
	 				->from('Assoplatform a')
					->leftJoin("a.Articles")
					->where("a.idassoplatform = ?",$article["id_asso"]);
				$article = $q->fetchOne();
					$message = $this->getMailer()->compose(
						  array('contact@explications-informatiques.fr' => "L'équipe d'explications-informatiques.fr"),
						  $request["recomand"]["email"],
						  'Un article vous à été recomandé',
							"Bonjour,
							Nous sommes l'équipe du site explications-informatiques.fr. L'une de vos connaissance nous a demandé de vous contacter pour vous recomander l'un des articles de notre site.
							
							L'auteur de cette recomandation à ajouté le message suivant à votre attention:
							".$request["recomand"]["texte"]."
							
							Vous pouvez consulter l'article sur <a href='http://explications-informatiques.fr/index.php/a/".$article["idassoplatform"]."/".sfCoreAutoload::sluggify($article["Articles"]["title"])."'>".$article["Articles"]["title"]."</a> .
							
							A trés bientôt sur http://explications-informatiques.fr! 
							"
						);
					$message->setContentType("text/html");
					$this->getMailer()->send($message);
				  //log de l'action en cours
	  sfCoreAutoload::logElem("Envoi d'une recommandation - asso:".$article["idassoplatform"]." desti:".$request["recomand"]["email"], $this->getUser()->getGuardUser()->getId(), date("Y-m-d h:i:s"));
			}
	  $this->getUser()->setFlash("info","Votre recommandation à été envoyée");
      $this->redirect('@show_article?title=article&idasso='.$article["idassoplatform"]);
    }
  }
}
